package com.bdk.middle.management.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.bdk.middle.management.api.domain.MenuDO;
import com.bdk.middle.management.api.domain.PermissionDO2;
import com.bdk.middle.management.core.entity.PermissionEntity;
import com.bdk.middle.management.api.domain.PermissionDO;
import com.bdk.middle.management.api.query.PermissionQueryDO;
import com.bdk.middle.common.result.ResultDO;

import java.util.List;

/**
 * <p>
 * 权利 服务类
 * </p>
 *
 * @author Reagan
 * @since 2021-01-23
 */
public interface PermissionService extends IService<PermissionEntity> {

    /**
     * 添加权利
     * @param domain 权利DO
     * @return ResultDO
     */
    ResultDO add(PermissionDO domain);

    /**
     * 绑定角色的权利
     * @param roleId 角色ID
     * @param permissionIds 权利Id列表
     * @return
     */
    ResultDO bindPermissions(String roleId, List<String> permissionIds);

    /**
     * 解绑角色
     * @param roleId 角色id
     * @return
     */
    ResultDO unbindPermissions(String roleId);

    /**
     * 修改权利信息
     * @param domain 权利DO
     * @return ResultDO
     */
    ResultDO edit(PermissionDO domain);

    /**
     * 获取权利详情
     * @param id 权利ID
     * @return ResultDO
     */
    ResultDO get(String id);

    /**
     * 删除权利
     * @param id 权利ID
     * @param modifier 修改人名
     * @return ResultDO
     */
    ResultDO remove(String id, String modifier);

    /**
     * 查找权利列表分页
     * @param domain 查询DO
     * @return ResultDO
     */
    ResultDO find(PermissionQueryDO domain);

    /**
     * 查找用户权限集合
     * @param sysUserName 系统用户名
     * @return ResultDO
     */

    ResultDO getPermissionByUsername(String sysUserName);

    /**
     * 查角色菜单，一级和二级菜单
     * @param roleId 角色id
     * @return
     */

    List<MenuDO> getMenusByRoleId(String roleId);

    /**
     * 角色权限列表
     * @param roleId 角色id
     * @return
     */

    List<PermissionDO2> getPermissionByRoleId(String roleId);
}
